#version 320 es
precision mediump float;  // 必须添加的精度声明

in vec2 texCoord;         // 输入纹理坐标
out vec4 FragColor;       // 输出颜色

uniform sampler2D yTexture;  // Y分量纹理
uniform sampler2D uTexture;  // U分量纹理
uniform sampler2D vTexture;  // V分量纹理

void main() {
    // 采样YUV分量（显式指定精度）
    mediump float y = texture(yTexture, texCoord).r;
    mediump float u = texture(uTexture, texCoord).r - 0.5;
    mediump float v = texture(vTexture, texCoord).r - 0.5;

    // 优化后的YUV转RGB计算（使用BT.601标准）
    mediump float r = y + 1.402 * v;
    mediump float g = y - 0.344136 * u - 0.714136 * v;
    mediump float b = y + 1.772 * u;

    // 添加颜色范围钳制（防止溢出）
    r = clamp(r, 0.0, 1.0);
    g = clamp(g, 0.0, 1.0);
    b = clamp(b, 0.0, 1.0);

    FragColor = vec4(r, g, b, 1.0);
}
